package com.lekang.le.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.lekang.common.annotation.Excel;
import com.lekang.common.core.domain.BaseEntity;

/**
 * 账单对象 bill
 * 
 * @author caoyangyang
 * @date 2025-10-27
 */
public class Bill extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 账单编号 */
    @Excel(name = "账单编号")
    private String billNo;

    /** 账单类型 */
    @Excel(name = "账单类型")
    private String billType;

    /** 账单月份 */
    @Excel(name = "账单月份")
    private String billMonth;

    /** 老人外键编号 */
    @Excel(name = "老人外键编号")
    private Long elderlyId;

    /** 每月应付 */
    @Excel(name = "每月应付")
    private BigDecimal monthlyPayable;

    /** 本期应付 */
    @Excel(name = "本期应付")
    private BigDecimal currentPayable;

    /** 预交款支付金额 */
    @Excel(name = "预交款支付金额")
    private BigDecimal prepaymentAmount;

    /** 账单金额 */
    @Excel(name = "账单金额")
    private BigDecimal billAmount;

    /** 应付金额 */
    @Excel(name = "应付金额")
    private BigDecimal payableAmount;

    /** 支付截至日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "支付截至日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentDeadline;

    /** 交易状态 */
    @Excel(name = "交易状态")
    private String transactionStatus;

    /** 账单开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billStartTime;

    /** 账单结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "账单结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date billEndTime;

    /** 创建人 */
    @Excel(name = "创建人")
    private Long creator;

    /** 支付渠道 */
    @Excel(name = "支付渠道")
    private String paymentChannel;

    /** 支付方式 */
    @Excel(name = "支付方式")
    private String paymentMethod;

    /** 支付凭证图片 */
    @Excel(name = "支付凭证图片")
    private String paymentVoucher;

    /** 支付备注 */
    @Excel(name = "支付备注")
    private String paymentRemark;

    /** 取消原因 */
    @Excel(name = "取消原因")
    private String cancelReason;

    /** 关联订单 */
    @Excel(name = "关联订单")
    private String relatedOrder;

    /** 额外字段1 */
    @Excel(name = "额外字段1")
    private String extraField1;

    /** 额外字段2 */
    @Excel(name = "额外字段2")
    private String extraField2;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setBillNo(String billNo) 
    {
        this.billNo = billNo;
    }

    public String getBillNo() 
    {
        return billNo;
    }

    public void setBillType(String billType) 
    {
        this.billType = billType;
    }

    public String getBillType() 
    {
        return billType;
    }

    public void setBillMonth(String billMonth) 
    {
        this.billMonth = billMonth;
    }

    public String getBillMonth() 
    {
        return billMonth;
    }

    public void setElderlyId(Long elderlyId) 
    {
        this.elderlyId = elderlyId;
    }

    public Long getElderlyId() 
    {
        return elderlyId;
    }

    public void setMonthlyPayable(BigDecimal monthlyPayable) 
    {
        this.monthlyPayable = monthlyPayable;
    }

    public BigDecimal getMonthlyPayable() 
    {
        return monthlyPayable;
    }

    public void setCurrentPayable(BigDecimal currentPayable) 
    {
        this.currentPayable = currentPayable;
    }

    public BigDecimal getCurrentPayable() 
    {
        return currentPayable;
    }

    public void setPrepaymentAmount(BigDecimal prepaymentAmount) 
    {
        this.prepaymentAmount = prepaymentAmount;
    }

    public BigDecimal getPrepaymentAmount() 
    {
        return prepaymentAmount;
    }

    public void setBillAmount(BigDecimal billAmount) 
    {
        this.billAmount = billAmount;
    }

    public BigDecimal getBillAmount() 
    {
        return billAmount;
    }

    public void setPayableAmount(BigDecimal payableAmount) 
    {
        this.payableAmount = payableAmount;
    }

    public BigDecimal getPayableAmount() 
    {
        return payableAmount;
    }

    public void setPaymentDeadline(Date paymentDeadline) 
    {
        this.paymentDeadline = paymentDeadline;
    }

    public Date getPaymentDeadline() 
    {
        return paymentDeadline;
    }

    public void setTransactionStatus(String transactionStatus) 
    {
        this.transactionStatus = transactionStatus;
    }

    public String getTransactionStatus() 
    {
        return transactionStatus;
    }

    public void setBillStartTime(Date billStartTime) 
    {
        this.billStartTime = billStartTime;
    }

    public Date getBillStartTime() 
    {
        return billStartTime;
    }

    public void setBillEndTime(Date billEndTime) 
    {
        this.billEndTime = billEndTime;
    }

    public Date getBillEndTime() 
    {
        return billEndTime;
    }

    public void setCreator(Long creator) 
    {
        this.creator = creator;
    }

    public Long getCreator() 
    {
        return creator;
    }

    public void setPaymentChannel(String paymentChannel) 
    {
        this.paymentChannel = paymentChannel;
    }

    public String getPaymentChannel() 
    {
        return paymentChannel;
    }

    public void setPaymentMethod(String paymentMethod) 
    {
        this.paymentMethod = paymentMethod;
    }

    public String getPaymentMethod() 
    {
        return paymentMethod;
    }

    public void setPaymentVoucher(String paymentVoucher) 
    {
        this.paymentVoucher = paymentVoucher;
    }

    public String getPaymentVoucher() 
    {
        return paymentVoucher;
    }

    public void setPaymentRemark(String paymentRemark) 
    {
        this.paymentRemark = paymentRemark;
    }

    public String getPaymentRemark() 
    {
        return paymentRemark;
    }

    public void setCancelReason(String cancelReason) 
    {
        this.cancelReason = cancelReason;
    }

    public String getCancelReason() 
    {
        return cancelReason;
    }

    public void setRelatedOrder(String relatedOrder) 
    {
        this.relatedOrder = relatedOrder;
    }

    public String getRelatedOrder() 
    {
        return relatedOrder;
    }

    public void setExtraField1(String extraField1) 
    {
        this.extraField1 = extraField1;
    }

    public String getExtraField1() 
    {
        return extraField1;
    }

    public void setExtraField2(String extraField2) 
    {
        this.extraField2 = extraField2;
    }

    public String getExtraField2() 
    {
        return extraField2;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("billNo", getBillNo())
            .append("billType", getBillType())
            .append("billMonth", getBillMonth())
            .append("elderlyId", getElderlyId())
            .append("monthlyPayable", getMonthlyPayable())
            .append("currentPayable", getCurrentPayable())
            .append("prepaymentAmount", getPrepaymentAmount())
            .append("billAmount", getBillAmount())
            .append("payableAmount", getPayableAmount())
            .append("paymentDeadline", getPaymentDeadline())
            .append("transactionStatus", getTransactionStatus())
            .append("billStartTime", getBillStartTime())
            .append("billEndTime", getBillEndTime())
            .append("creator", getCreator())
            .append("createTime", getCreateTime())
            .append("paymentChannel", getPaymentChannel())
            .append("paymentMethod", getPaymentMethod())
            .append("paymentVoucher", getPaymentVoucher())
            .append("paymentRemark", getPaymentRemark())
            .append("cancelReason", getCancelReason())
            .append("relatedOrder", getRelatedOrder())
            .append("extraField1", getExtraField1())
            .append("extraField2", getExtraField2())
            .toString();
    }
}
